package khl.ooo.domain.opleiding;

import java.util.HashMap;

import khl.ooo.domain.vak.Vak;

public class Opleiding {
	private String code;
	private String naam;
	private HashMap<String, Vak> vakken = new HashMap<String, Vak>();
	
	public Opleiding(String code, String naam) {
		this.setCode(code);
		this.setNaam(naam);
		this.vakken = new HashMap<String, Vak>();
	}
	
	public void setCode(String code) {
		if(code != null && code != "") {
			this.code = code;
		} else {
			throw new IllegalArgumentException();
		}
	}
	public String getCode() {
		return this.code;
	}
	
	public void setNaam(String naam) {
		if(naam != null && naam != "") {
			this.naam = naam;
		} else {
			throw new IllegalArgumentException();
		}
	}
	public String getNaam() {
		return this.naam;
	}
	
	public void addVak(Vak vak) {
		if((vak != null) && !(vakken.containsValue(vak))) {
			vakken.put(vak.getCode(), vak);
		} else
			throw new IllegalArgumentException();
	}
	
	public void removeVak(Vak vak) {
		if((vak instanceof Vak) && (vak != null)) {
			if(this.getVakken().containsKey(vak.getCode())) {
				vakken.remove(vak.getCode());
			}
		}
		throw new IllegalArgumentException();
	}
	
	public HashMap<String, Vak> getVakken() {
		return this.vakken;
	}
	
	public String toString() {
		String output = "";
		output += this.getCode() + " - " + this.getNaam();
		return output;
	}
	
	public void setVakken(HashMap<String, Vak> vakken) {
		if((vakken.size() > 0) && (vakken instanceof HashMap<?, ?>)) {
			this.vakken = vakken;
		}
	}
	
	public boolean equals(Opleiding opl) {
		if(opl != null && opl instanceof Opleiding) {
			return this.getCode() == opl.getCode();
		} else
			return false;
	}
	
	public int compareTo(Opleiding opl) {
		if(opl != null && opl instanceof Opleiding) {
			return this.getCode().compareTo(opl.getCode());
		} else 
			throw new IllegalArgumentException();
	}
}
